/**
 * AJAX封装
 * @param sync 是否异步传输 默认是true是异步。 false就是同步传输
 * @param cache 是否开启缓存
 * @param type ajax的传输类型 POST 或 GET
 * @param url 传输的目标url
 * @param dataType 预期的服务器响应的数据类型
 * @param data 传输的数据
 * @param beforeSendFunc 发送之前调用的方法
 * @param completeFunc 请求完成时运行的函数（在请求成功或失败之后均调用，即在 success 和 error 函数之后）
 * @param errorFunc 请求失败要运行的函数
 * @param successFunc 请求成功要运行的函数
 */
function ajax_all(sync, cache, type, url, dataType, data, beforeSendFunc, completeFunc, errorFunc, successFunc) {
    $.ajax({
        async: sync,
        cache: cache,
        type: type,
        url: url,
        dataType: dataType,
        data: data,
        beforeSend: function () {
            beforeSendFunc();
        },
        complete: function () {
            completeFunc();
        },
        error: function (data) {
            errorFunc(data);
        },
        success: function (data) {
            successFunc(data);
        }
    });
}

/**
 * AJAX post 封装
 * @param url 传输的目标url
 * @param data 传输的数据
 * @param beforeSendFunc 发送之前调用的方法
 * @param completeFunc 请求完成时运行的函数（在请求成功或失败之后均调用，即在 success 和 error 函数之后）
 * @param errorFunc 请求失败要运行的函数
 * @param successFunc 请求成功要运行的函数
 */
function ajax_post(url, data, beforeSendFunc, completeFunc, errorFunc, successFunc) {
    ajax_all(true, true, 'POST', url, 'json', data, beforeSendFunc, completeFunc, errorFunc, successFunc);
}

function ajax_post(url, data, successFunc) {
    ajax_all(true, true, 'POST', url, 'json', data, function() { }, function() { }, function() { }, successFunc);
}

function ajax_post(url, data, errorFunc, successFunc) {
    ajax_all(true, true, 'POST', url, 'json', data, function() { }, function() { }, errorFunc, successFunc);
}

/**
 * AJAX get 封装
 * @param url 传输的目标url
 * @param data 传输的数据
 * @param beforeSendFunc 发送之前调用的方法
 * @param completeFunc 请求完成时运行的函数（在请求成功或失败之后均调用，即在 success 和 error 函数之后）
 * @param errorFunc 请求失败要运行的函数
 * @param successFunc 请求成功要运行的函数
 */
function ajax_get(url, data, beforeSendFunc, completeFunc, errorFunc, successFunc) {
    ajax_all(true, true, 'GET', url, 'json', data, beforeSendFunc, completeFunc, errorFunc, successFunc);
}

function ajax_get(url, data, successFunc) {
    ajax_all(true, true, 'GET', url, 'json', data, function() { }, function() { }, function() { }, successFunc);
}

function ajax_get(url, data, errorFunc, successFunc) {
    ajax_all(true, true, 'GET', url, 'json', data, function() { }, function() { }, errorFunc, successFunc);
}